package com.ww.juc.completable.future.async;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * runAsync是创建没有返回值的异步任务。它有两个方法，一个是使用默认线程池（ForkJoinPool.commonPool()）的方法，一个是带有自定义线程池的重载方法
 * @author wanggw
 * 2024年2月4日 下午4:45:57
 */
public class RunAsyncDemo {

	// 不带返回值的异步请求，默认线程池
	// public static CompletableFuture<Void> runAsync(Runnable runnable)
	 
	// 不带返回值的异步请求，可以自定义线程池
	// public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor)
	
	public static void main(String[] args) throws InterruptedException, ExecutionException {
		CompletableFuture<Void> cf1 = CompletableFuture.runAsync(() -> {
			System.out.println("做点事情吧...");
		});
		System.out.println("结果->" + cf1.get());
		
		System.out.println("--------------------------------------");
		
		ExecutorService executorService = Executors.newSingleThreadExecutor();
		CompletableFuture<Void> cf2 = CompletableFuture.runAsync(() -> {
			System.out.println("还可以做点别的事情吗");
		}, executorService);
		System.out.println("结果2呢：" + cf2.get());
	}
}
